package com.jsbs.iam.user.service;

import com.github.pagehelper.PageInfo;
import com.jsbs.iam.user.dto.*;
import com.jsbs.iam.user.entity.IamUserTypeBase;

import java.util.List;

/**
 * @BelongsProject: iam
 * @BelongsPackage: com.jsbs.iam.user.service
 * @Author: WangJiYuan
 * @Description: TODO
 * @Version: 2022-12-20  17:32
 */
public interface UserTypeService {
    /**
     * 查询用户类型数据
     * @param companyCode 租户编码
     * @param userTypeInfo 用户类型描述
     * @return
     */
    List<IamUserTypeBase> getUserTypeData(String companyCode, String userTypeInfo);

    /**
     * 校验用户类型名称是否唯一
     *
     * @param userTypeInfo
     * @param companyCode
     * @return
     */
    int checkName(String userTypeInfo, String companyCode);

    /**
     * 新增用户类型
     * @param userTypeAddDto
     */
    void addUserType(UserTypeAddDto userTypeAddDto);

    /**
     * 校验用户类型下是否有用户
     *
     * @param userTypeCode
     * @param companyCode
     * @return
     */
    int checkUserCount(String userTypeCode, String companyCode);

    /**
     * 根据用户类型编码逻辑删除用户类型
     * @param deleteDto
     */
    void deleteUserType(UserTypeDeleteDto deleteDto);

    /**
     * 查询对应用户类型下所有字段(分页)
     * @param userTypeFieldSelectDto
     * @return
     */
    PageInfo selectUserTypeFieldList(UserTypeFieldSelectDto userTypeFieldSelectDto);

    /**
     * 新增用户类型字段
     * @param userTypeFieldAddDto
     */
    void addUserTypeField(UserTypeFieldAddDto userTypeFieldAddDto);

    /**
     * 修改用户类型字段
     * @param userTypeFieldUpdateDto
     */
    void updateUserTypeField(UserTypeFieldUpdateDto userTypeFieldUpdateDto);

    /**
     * 删除用户类型字段(批量)
     * @param userTypeFieldUpdateDto
     */
    void deleteUserTypeField(UserTypeFieldUpdateDto userTypeFieldUpdateDto);
}
